/**
 * 
 */
package com.xth8013.as.service;

import java.util.List;
import java.util.Map;

import com.xth8013.as.domain.User;
import com.xth8013.as.domain.UserConfigParam;
import com.xth8013.as.util.UserQueryHelper;

/**
 * 
 * @Description:
 * @author: tianhua.xie
 * @Date: 2017年2月9日 下午8:28:14 
 * 
 */
public interface UserService {

	/**
	 * 加载所有所属部门列表
	 * 
	 * @return
	 */
	List<Map<String, Object>> loadDepartmentList();

	/**
	 * 加载所有职称列表
	 * 
	 * @return
	 */
	List<Map<String, Object>> loadJobTitleList();

	/**
	 * 若userId为空，则加载所有用户角色列表；否则，加载userId用户的所有用户角色列表
	 * 
	 * @param userId
	 * @return
	 */

	Map<String, Object> loadUserRoleList(Integer userId);

	/**
	 * 保存新增的用户信息
	 * 
	 * @param user
	 *            用户信息
	 * @param selectRoleIds
	 *            要保存的用户角色信息
	 */
	void save(User user, List<Integer> selectRoleIds);

	User getUserById(Integer userId);

	void modifyUser(User user, List<Integer> selectRoleIds);

	void delectUsers(String decUserIds);

	List<Map<String, Object>> getUserMenuTreeDataById(Integer userId, String parentId);

	/**
	 * 修改用户个人的信息
	 * 
	 * @param user
	 * @return 将修改成功后的用户信息返回
	 */
	User modifyPersonalInfo(User user);

	/**
	 * 修改用户个人密码
	 * 
	 * @param userId
	 * @param newPwd
	 * @param oldPwd
	 */
	void modifyPersonalPwd(Integer userId, String newPwd, String oldPwd);

	/**
	 * 修改用户系统参数配置
	 * 
	 * @param param
	 */
	void modifyConfigParam(UserConfigParam param);

	/**
	 * 根据用户id获取用户系统参数配置, 若数据库不存在该用户的系统参数配置，则返回默认配置
	 * 
	 * @param userId
	 * @return
	 */
	UserConfigParam loadUserConfigParamById(Integer userId);

	/**
	 * 
	 * @param user
	 * @return
	 */
	int addUser(User user);

	/**
	 * 
	 * @param account
	 * @return
	 */
	User getUserByAccount(String account);

	/**
	 * 
	 * @param helper
	 * @return
	 */
	Map<String, Object> getUserDataGrid(UserQueryHelper helper);

}
